// #ifndef VUE3
import Vue from 'vue'
import App from './App'
import Vuex from 'vuex' // 引入 Vuex
import store from './store/store' // 引入 Vuex store
import {
  $http
} from '@escook/request-miniprogram' // 导入网络请求包
import uniTag from '@/uni_modules/uni-tag/components/uni-tag/uni-tag.vue' // 引入 uni-tag 组件

// 注册 Vuex 插件
Vue.use(Vuex)

// 在 uni-app 项目中，可以把 $http 挂载到 uni 顶级对象
uni.$http = $http
$http.baseUrl = "https://api-hmugo-web.itheima.net"

// 封装弹框的方法
uni.$showMsg = function(title = "数据请求失败", duration = 1500) {
  uni.showToast({
    title,
    duration,
    icon: 'none'
  })
}

// 请求开始之前做一些事情
$http.beforeRequest = function(options) {
  uni.showLoading({
    title: '数据加载中。。。'
  })

  //判断请求的是否为有权限的API接口
  if (options.url.indexOf('/my/') !== -1) {
    //为请求头添加身份认证字段
    options.header = {
      //字段的值可以直接从vuex中进行获取
      Authorization: store.state.m_user.token
    }
  }
}

// 请求完成之后做一些事情
$http.afterRequest = function() {
  wx.hideLoading()
}

Vue.config.productionTip = false

App.mpType = 'app'

// 注册 uni-tag 组件
Vue.component('uni-tag', uniTag) // 注册组件

const app = new Vue({
  ...App,
  store
})

app.$mount()
// #endif

// #ifdef VUE3
import {
  createSSRApp
} from 'vue'
import App from './App.vue'
import store from './store/store' // 引入 Vuex store
import uniTag from '@/uni_modules/uni-tag/components/uni-tag/uni-tag.vue' // 引入 uni-tag 组件

export function createApp() {
  const app = createSSRApp(App)

  // 在 Vue 3 中挂载 Vuex
  app.use(store)

  // 注册 uni-tag 组件
  app.component('uni-tag', uniTag)

  return {
    app
  }
}
// #endif